Інформація про новину
  • Переглядів: 2602
  • Дата: 4-10-2021, 08:23
4-10-2021, 08:23

26. Об'єкти, їх властивості та методи в Python

Категорія: Інформатика





Попередня сторінка:  25. Налагодження програмного коду в Python
Наступна сторінка:   27. Графічний інтерфейс користувача в Py...

Мова Python є об’єктно-орієнтованою, тобто кожна величина є об’єктом певного класу. Окрім вбудованих класів (типів даних), програміст може описувати і використовувати в програмі власні класи. Добре спроектовані класи — це «будівельні блоки», з яких легше будувати складні програми.

Клас — це опис об’єктів певного типу, об’єкт — це екземпляр деякого класу. Опис класу містить атрибути (змінні), які відповідають властивостям об’єктів, і описи методів класу — дій, які можуть виконувати об’єкти цього класу.

Якщо опис класу Animal (Тварина) містить атрибут маса, то кожному екземпляру цього класу можна надати певне значення маси.

Опис класів і створення об'єктів

Згадаємо, як описують класи в програмі. Можна вважати, що клас — це своєрідна інструкція зі створення екземплярів. Об’єкт, створений на основі класу, називають екземпляром цього класу.

Опис класу зручно розташовувати на початку коду програми. Синтаксис опису класу:

Атрибути класу мають однакове значення для всіх екземплярів класу, тоді як атрибути екземплярів — окреме значення для кожного екземпляра.

Метод__і nit__називається конструктором класу. За наявності, він

автоматично виконується під час створення кожного нового екземпляра класу для початкового налаштування властивостей об’єкта. Перший із параметрів в описі конструктора (здебільшого його позначають self) зберігатиме посилання на створений об’єкт.

Синтаксис команди створення об’єкта:

Доступ до створеного об’єкта можна отримати через змінну. Якщо такий доступ не потрібен, назву змінної не вказують.

Опишемо клас, що моделює транспортний засіб (рис. 26.1).

В останньому рядку коду викликається конструктор класу Transport і створюється екземпляр класу, відповідні атрибути якого мають значення вантажівка і дизельний. Посилання на цей об’єкт зберігається в змінну trl.

Методи к/іасу

Під час виклику методів можуть змінюватися властивості (значення атрибутів) об’єкта, а також виконуватися інші дії.

Синтаксис заголовка методу класу:

Код методу виконується у відповідь на виклик методу для конкретного об’єкта.

Виклик методу для об’єкта має такий синтаксис:

У разі виклику методу до нього передається посилання на той об’єкт, для якого викликається метод (параметр self).

Додамо до опису класу Transport() опис методу fuel() для виведення повідомлення про вид пального (рис. 26.2):

Буде надруковано: вантажівка: дизельний двигун.

Створення класів-нащадків базового класу

Об’єктно-орієнтоване програмування дозволяє прискорити розробку програми шляхом створення нових класів на основі створених раніше.

Успадкування — це можливість створення класу-нащадка на основі наявного (базового) класу.

Транспортний засіб має такі властивості: тип засобу, тип двигуна, вартість. Автобус, крім цих властивостей, має ще такі: кількість місць, призначення, маршрут. З точки зору успадкування клас Автобус є нащадком класу Транспортний засіб.

Клас-нащадок містить усі атрибути та методи базового класу, проте його можна розширити, додавши нові. У класі-нащадку можна не описувати атрибути та методи, успадковані від базового класу.

Створимо на основі базового класу Transport два класи-нащадки: Truck і Bus, що мають власні методи (рис. 26.3).

Використання панелі Структура

У панелі Структура відображається структура опису класів і перелік змінних екземплярів класів. Зверніть увагу на позначки заголовків класів

Якщо набрати назву екземпляра класу, автодоповнення запропонує перелік методів, які можна викликати для цього об’єкта із зазначенням класу, в якому метод описано (рис. 26.5).

Отже, програміст може описати свій тип даних (клас), визначити в класі певні методи. Разом із тим використання готових класів, описаних у файлах модулів (наприклад, у модулі tkinter або easygui) значно прискорює розробку програми.

Питання для самоперевірки

1. Поясніть поняття класу, об’єкта, атрибута класу, методу класу.

2. Поясніть сутність успадкування.

3. Створіть клас Element — модель хімічного елемента. У конструкторі класу__init__опишіть атрибути name, symbol і number.

Створіть екземпляр elem класу Element зі значеннями атрибутів 'Aurum', Au', 79. Виведіть значення атрибутів об’єкта elem.

4. Створіть модель країни — клас Country з атрибутами name (назва країни), currency (національна валюта). Опишіть метод класу print_currency, який виводить значення атрибутів об’єкта.

5. Створіть екземпляр my_country класу Country зі значеннями атрибутів 'Україна', 'гривня'. Викличте для об’єкта my_country метод print_currency.

6. Створіть екземпляри класу Country, що описують Польщу, Німеччину, Мексику, Австралію, Танзанію.

Вправа 26

Створити програму, що моделює облік користувачів на сайті.

1) Завантажте середовище PyCharm. Створіть файл типу Python file із назвою Вправа 26.

2) Створіть клас із назвою User і атрибутом privileges = [ ] (порожній список; буде використано в класах-нащадках). Конструктор класу має містити атрибути first_name, last_name, age. Опишіть методи класу User:

3) Напишіть клас Admin, що успадковує від класу User. У список privileges помістіть рядки з описом привілеїв адміністратора (Дозвіл на блокування користувачів, Дозвіл на додавання повідомлень тощо):

4) Напишіть клас Visitor, що успадковує від класу User. Задайте привілеї для користувачів цього класу (Дозвіл на перегляд вмісту, Заборона додавання повідомлень тощо).

5) Створіть екземпляр класу User. Викличте для цього об’єкта методи describe_user(), greeting_user():

6) Створіть екземпляри admin класу Admin, visit класу Visitor. Викличте для цих об’єктів методи describe_user(), show_privileges(). Запустіть і випробуйте програму Вправа 2б.ру.

Комп'ютерне тестування

Виконайте тестове завдання 26 із автоматичною перевіркою результату.

 

Це матеріал з підручника Інформатика 8 клас Бондаренко (2021)

 




Попередня сторінка:  25. Налагодження програмного коду в Python
Наступна сторінка:   27. Графічний інтерфейс користувача в Py...



^